Programming Environments in a Nutshell